<?php

namespace Illuminate\Contracts\Config;

/**
 * 配置项接口
 */
interface Repository
{
    /**
     * 确定给定的配置值是否存在
     *
     * @param  string $key
     * @return bool
     */
    public function has($key);

    /**
     * 获取指定的配置值
     *
     * @param  array|string $key
     * @param  mixed $default
     * @return mixed
     */
    public function get($key, $default = null);

    /**
     * 获取应用程序的所有配置项
     *
     * @return array
     */
    public function all();

    /**
     * 设置给定的配置值
     *
     * @param  array|string $key
     * @param  mixed $value
     * @return void
     */
    public function set($key, $value = null);

    /**
     * 在数组配置值上添加一个值
     *
     * @param  string $key
     * @param  mixed $value
     * @return void
     */
    public function prepend($key, $value);

    /**
     * 将一个值压入数组配置值
     *
     * @param  string $key
     * @param  mixed $value
     * @return void
     */
    public function push($key, $value);
}
